} else {
this.box = new St.BoxLayout({ vertical: true });
}
+ this.box.connect_after('queue-relayout', Lang.bind(this, this._menuQueueRelayout));
this.isOpen = false;
}
},
+ // Because of the above column-width funniness, we need to do a
+ // queue-relayout on every item whenever the menu itself changes
+ // size, to force clutter to drop its cached size requests. (The
+ // menuitems will in turn call queue_relayout on their parent, the
+ // menu, but that call will be a no-op since the menu already
+ // has a relayout queued, so we won't get stuck in a loop.
+ _menuQueueRelayout: function() {
+ this.box.get_children().map(function (actor) { actor.queue_relayout(); });
+ },
+
addActor: function(actor) {
this.box.add(actor);
},